In a large-scale SOA environment it can be difficult to know what application is consuming what service. In some SOA environments, there may be as many as thousands (if not tens of thousands) of atomic services. Atomic services that can be called by other services are rapidly assembled into larger scale applications (also called composite services). The above scenario is generally a positive development because it leads to reuse of services at the atomic and/or composite levels. This is a well known advantage of SOA.
An enterprise service bus (ESB) is a known software architecture model effecting communication between mutually interacting software applications in an SOA environment. It is considered useful in enterprise application integration (EAI) of heterogeneous and complex landscapes. An ESB typically includes the following duties and/or characteristics: (i) transports the design concept of modern operating systems to networks of disparate and independent computers; (ii) provide for commodity services like event handling, data transformation and mapping, message and event queuing and sequencing, security or exception handling, protocol conversion; (iii) adoption, translation and routing of a client request to the appropriate answering service; (iv) monitor and control routing of message exchange between services; (v) resolve contention between communicating service components; (vi) control deployment and versioning of services; (vii) marshal use of redundant services; and (viii) enforcing proper quality of communication service.